constraint satisfaction problem in artificial intelligence